//
// Created by LiuYou on 2021/5/13.
//

#include <cstdlib>
#include <memory>

/**
 * @brief allocator介绍
 * @return
 */
int main() {
    {
        // 下面的两句都是可以的。
        // 分配512个 int 。
//        int* pInt = std::allocator<int>().allocate(512, (int*) 0);
        // allocate和deallocate这两个函数是allocator中最重要的两个函数。
        int* pInt = std::allocator<int>().allocate(512, (int*) nullptr);
        std::allocator<int>().deallocate(pInt, 512);
    }

    {
        // 这样是不行的, 因为 allocate并没有设计成 static member function。
        // 所以只能使用上面的创建一个临时对象的方式调用 allocate和deallocate函数 使用标准库容器的标准allocator中的分配和释放空间的函数。
//        std::allocator<int>::allocate(512, (int*) 0);
    }


    std::exit(0);
}


